package com.yuheadline.model.article.enums;

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;

/**
 * 文章状态枚举
 * 对应数据库字段：status（smallint类型）
 * 0：审核通过，1：审核不通过，2：待审核，3：草稿
 */
@Getter
public enum ArticleStatusEnum {

    APPROVED(0, "审核通过"),
    REJECTED(1, "审核不通过"),
    WAIT_REVIEW(2, "待审核"),
    DRAFT(3, "草稿");

    @EnumValue  // MyBatis-Plus注解：指定存储到数据库的枚举值
    private final Integer code;

    @JsonValue  // Jackson注解：指定序列化到JSON的字段值
    private final String description;

    ArticleStatusEnum(Integer code, String description) {
        this.code = code;
        this.description = description;
    }

    /**
     * 通过状态码获取枚举
     */
    public static ArticleStatusEnum getByCode(Integer code) {
        if (code == null) {
            return null;
        }
        for (ArticleStatusEnum status : ArticleStatusEnum.values()) {
            if (status.getCode().equals(code)) {
                return status;
            }
        }
        return null;
    }
}
